package com.rasenhund.android.gsimulator.schema;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * MS オブジェクトクラス
 */
public class MobileSuit implements Serializable {

    private static final long serialVersionUID = 1L;

    protected int categoryCd = -1; // カテゴリ
    protected String modelNo = ""; // 型番
    protected String MsName = ""; // MS名
    protected int cost = 0; // コスト
    protected ArrayList<Arms> mArmsList = null; // 武装リスト
    
    protected String mode = ""; // モード

    protected int selectedArmsNo = 0; // 選択中の武装No

    public MobileSuit() {
        mArmsList = new ArrayList<Arms>();
        // コストアップなし用にデフォルトで追加しておく
        mArmsList.add(new Arms("", 0));
    }

    /********************
     * getter / setter
     ********************/

    // カテゴリコード
    public int getCategoryCd() {
        return categoryCd;
    }

    public void setCategoryCd(int categoryCd) {
        this.categoryCd = categoryCd;
    }

    // 型番
    public String getModelNo() {
        return modelNo;
    }

    public void setModelNo(String modelNo) {
        this.modelNo = modelNo;
    }

    // MS名
    public String getMsName() {
        return MsName;
    }

    public void setMsName(String msName) {
        MsName = msName;
    }

    // コスト
    public int getCost() {
        // MSコスト + 追加コスト
        return this.cost + getSelectedArmCost();
    }

    public void setCost(int cost) {
        this.cost = cost;
    }

    // 武装
    public ArrayList<Arms> getArms() {
        return this.mArmsList;
    }

    public void addArms(Arms arms) {
        this.mArmsList.add(arms);
    }

    // モード
    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

    // 選択中の武装コストを取得する
    private int getSelectedArmCost() {
        return mArmsList.get(selectedArmsNo).getCost();
    }

    // 選択中の武装名を取得する
    public String getSelectedArmName() {
        return mArmsList.get(selectedArmsNo).getName();
    }

    /********************
     * Method
     ********************/

    /**
     * 選択中の武装を一つ進める
     */
    public void addNextArmsCost() {

        // 選択中の武装Noを1つ進める
        selectedArmsNo++;

        if (selectedArmsNo >= mArmsList.size()) {
            // リストのサイズを超える場合は0に戻す
            // これで追加武装なしのパターンも同じロジックで処理できるはず
            selectedArmsNo = 0;
        }

    }

}
